package com.mazaiting.rabbitmq.domain.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.mazaiting.mybatisplus.domain.entity.BaseUserEntity;
import lombok.Getter;
import lombok.Setter;

/**
 * <p>
 * MQ 消息发送记录
 * </p>
 *
 * @author mazaiting
 * @since 2022-10-01
 */
@Getter
@Setter
@TableName("mq_message")
public class MqMessage extends BaseUserEntity {

    /**
     * 消息 ID
     */
    @TableId(value = "id", type = IdType.INPUT)
    private String id;

    /**
     * 交换机
     */
    @TableField("exchange")
    private String exchange;

    /**
     * 路由 key
     */
    @TableField("routing_key")
    private String routingKey;

    /**
     * 消息内容
     */
    @TableField("body")
    private String body;

    /**
     * 过期时间, 单位毫秒(ms)
     */
    @TableField("expiration")
    private Integer expiration;

    /**
     * 处理时是否需要加锁
     */
    @TableField("exclusion")
    private Boolean exclusion;

    /**
     * 发送状态, 默认为空(true: 成功; false: 失败)
     */
    @TableField("send_status")
    private Boolean sendStatus;

    /**
     * 接收状态, 默认为空(true: 成功; false: 失败)
     */
    @TableField("receive_status")
    private Boolean receiveStatus;

    /**
     * 重试次数
     */
    @TableField("retry_count")
    private Integer retryCount;

    /**
     * 最大重试次数
     */
    @TableField("max_retry_count")
    private Integer maxRetryCount;

    /**
     * 完成状态. (true: 处理完成; false: 未完成)
     */
    @TableField("complete_status")
    private Boolean completeStatus;

    /**
     * 失败原因
     */
    @TableField("error_msg")
    private String errorMsg;

}
